package com.thinkit.bigdata.web.service.sec;

import com.thinkit.bigdata.core.feature.orm.mybatis.Page;
import com.thinkit.bigdata.web.model.config.SysArea;
import com.thinkit.bigdata.web.model.result.HtmlResult;
import com.thinkit.bigdata.web.model.sec.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Created by lihongli on 2018/9/17
 */
public interface GroupService {

    SysGroup selectByPrimaryKey(Long id);

    List<SysGroup> selectByExample(SysGroupExample example);

    List<SysGroup> selectByExample(Page<SysGroup> page, SysGroupExample example);

    Integer countByExample(SysGroupExample example);

    Integer insert(SysGroup record);

    SysGroup groupGetByPK(Long id);

    Integer update(SysGroup record);

    Integer groupDeleteBatch(List<Long> idList);

    Integer statusSingle(SysGroup record, Long id);

    Integer statusBatch(SysGroup record, List<Long> idList);

    JsTreeNode getTreeData(Integer areaId);

    JsTreeNode getAddTreeData(Integer areaId);

    JsTreeNode getEditTreeData(Integer areaId, Long groupId);

    QcRelationDto selectedSeat(Long qcGroupId);

    Integer insertQcRelation(QcRelationDto qcRelation);

    HtmlResult insertGroups(List<SysGroup> groupList);

    /**
     * 批量导入用户时 新增组织机构信息
     *
     * @param groupListName excel中第一列组织机构名称 多个机构名称以"-"分割
     * @param groupTypeName 机构类型 坐席 质检 其他
     * @param areaid        省份id
     * @param loginUserId   操作人id
     * @return 用户所属组织机构id
     */
    Long insertGroupsOnBatchImportUser(String groupListName, String groupTypeName, Long areaid, Long loginUserId);

    List<GroupAuthDto> selectUnAuthSeatGroupByGroupId(Long groupId, Long areaId);

    List<GroupAuthDto> selectAuthSeatGroupByGroupId(Long groupId);

    List<SysGroup> selectSeatGroupByQcGroupId(Page<SysGroup> page, Long groupId, Long userId);

    List<SysGroup> selectSeatGroupByQcGroupId(Long groupId, Long userId);

    SysArea selectAreaInfoByGroupId(Long groupId);

    /**
     * 根据用户id、组织机构id查询未经授权的坐席组信息（包含坐席组的父级机构信息）
     * 查询：1.所在组设置的坐席组信息；2.个人设置的坐席组信息
     */
    List<GroupAuthDto> receiveUnAuthSeatGroup(Long userId, Long groupId, Long areaId);

    /**
     * 根据用户id、组织机构id查询已授权的坐席组信息（包含坐席组的父级机构信息）
     * 查询：1.所在组设置的坐席组信息；2.个人设置的坐席组信息
     */
    List<GroupAuthDto> receiveAuthSeatGroup(@Param("userId") Long userId, @Param("groupId") Long groupId);
}
